/*
浏览器有一个缓存空间(不是session storage那些，是内部开辟的一个空间)




一个页面里的某些js文件 我们可能一辈子也不会改动 so不希望它每次请求都重新去服务器拿

这就是强制缓存存在的意义(适用于更新不频繁的文件)

>一般来说 第一次请求(即加载或则说刷新后的首个页面)是不受缓存控制的(即你每次请求的那个html是不会被缓存的)
>,但协商缓存是会缓存首页的
*/

//localhost:3005/1.html

const http = require('http');
const path = require('path');
const fs = require('fs');
http.createServer((req, res) => {
  let {pathname} = require('url').parse(req.url);
  console.log('pathname:',pathname);
  let absPath = path.join(__dirname, pathname);
  fs.stat(absPath,(err,statObj)=>{
    if(err){
      res.statusCode = 404;
      return res.end();
    }
    if(statObj.isFile()){
      // 强制缓存
      // 10s内再发起同样的请求 就别再来找我了
      res.setHeader('Cache-Control', 'max-age=10'); //以秒为单位 不会续杯(即10秒后一定会过期 即使之间你又重复访问了一次)
      //下次请求时打开浏览器network可以发现↓
      //a.js	200	script	1.html	(from memory cache)	0 ms
      //低版本浏览器使用这个↓
      // res.setHeader('Expires',new Date(Date.now()+20*1000).toGMTString()); //←放绝对时间
      fs.createReadStream(absPath).pipe(res);
    }
  })
}).listen(3005,()=>{
  console.log(`server is running at 3005`);
});
